js
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function (s) {
let max = ''
if (s.length < 2) {
return s
}
/**
* 时间复杂度高,需优化
* const isPalindrome = (str) => {
* return str === str.split('').reverse().join('')
* }
*/
const isPalindrome = (str) => {
if (str.length === 1) {
return true
}
let i = 0,
j = str.length - 1
while (i < j) {
if (str[i] !== str[j]) {
return false
}
i++
j--
}
return true
}
const len = s.length
for (let i = 0; i < len; i++) {
let char = s[i]
for (let j = len - 1; j >= i + max.length; j--) {
if (char === s[j]) {
const subStr = s.slice(i, j + 1)
if (isPalindrome(subStr) && subStr.length > max.length) {
max = subStr
}
}
}
}
return max
}